Skip to content

docs: comprehensive refactor + brand alignment#293

Merged
smecsia merged 10 commits into
mainfrom
docs/refactor
May 25, 2026
Merged

docs: comprehensive refactor + brand alignment#293
smecsia merged 10 commits into
mainfrom
docs/refactor

Conversation

@universe-ops

Copy link
Copy Markdown
Contributor

What this PR does

A comprehensive rewrite of the docs in three dimensions:

  1. Tone ? strip the "SaaS brochure" voice from the docs. Promotional pages
    (motivation.md, use-cases.md, scaling-advantages.md,
    compare-with-other-tools.md) are deleted; their content lives on the
    landing site, not in the docs.
  2. Schema accuracy ? every server.yaml snippet now uses the canonical
    three-level resources.resources.<env>.resources.<name> nesting, verified
    against pkg/api/server.go Go structs.
  3. Brand alignment ? the docs site now visually matches
    simple-container.com: dark slate palette, Plus Jakarta Sans / DM Mono
    typography, brand-purple primary, brand-cyan accent, SC logo. Themed via
    mkdocs-material palette + extra.css, not a fork.

Net diff: 120 files changed, 1,158 insertions, 2,736 deletions (?1,578 lines).

Highlights

Promotional cuts (~1,700 lines deleted)

Page Why
concepts/motivation.md "Game-changing approach", "500� speed improvement" ? pure brochure. Duplicates landing.
reference/use-cases.md "10 reasons to buy SC" with quantified pitches in every entry.
advanced/scaling-advantages.md 912-line SC-vs-Terraform marketing comparison.
advanced/compare-with-other-tools.md "Why SC wins" positioning tables.

index.md rewritten from 103 ? 30 lines: one factual paragraph, five links
(Install / Quickstart / Concepts / Reference / Guides), one brief Forge
mention (Forge emits SC YAML natively via the MCP server).

concepts/main-concepts.md heavily trimmed (282 ? 138 lines): kept the
architectural substance (parent/child stacks, comparison table, resource-sharing
pattern, double-resources nesting note) and the mermaid diagram. Cut the
"quantified scaling benefits", "real-world scenarios", and "conclusion"
sections ? all marketing.

Brand styling

  • mkdocs.yml: added palette (slate dark + default light, primary deep purple,
    accent cyan), font (Plus Jakarta Sans / DM Mono), favicon, extra_css,
    and three feature flags (navigation.top, content.code.copy, toc.integrate).
  • docs/stylesheets/extra.css (208 lines, 12 sections): brand color tokens
    tuned to landing's exact hex values (#a855f7 / #22d3ee / #07070f /
    #eeeeff / #93c5fd / #c4b5fd), dark-scheme overrides, header backdrop
    blur, hero-gradient h1 on the homepage, code-block styling, brand-purple
    table headers, admonition tweaks.
  • docs/images/sc-logo.png swapped for landing's canonical 1024�1024 asset.
  • toc.integrate ? the per-page TOC now folds into the left sidebar instead of
    showing as a separate right column, so pages with chapters no longer have
    two side panels.

Mermaid diagram rendering

The Architecture Overview diagram on main-concepts.md was unreadable on the
dark scheme ? hardcoded pastel classDef fill: values overrode any global
theme. Replaced with dark, brand-aligned fills that keep three-way distinction
between subgraphs (parent stack = dark navy, service stack = dark indigo,
deployment flow = dark teal). Also reconfigured the mkdocs-mermaid2-plugin
to use the correct fence formatter (fence_mermaid rather than fence_mermaid_custom,
since the latter only bridges with Material's Insiders edition).

Nav surfacing

The repo had ~16 pages live but not in mkdocs.yml. This PR surfaces them all:

  • Troubleshooting ? new nav section, container-security page.
  • Compliance ? new nav section, NIST SSDF mapping page.
  • Guides ? added 6 previously-orphaned guides: service-steps-to-deploy,
    cicd-github-actions, container-security, dns-management,
    gke-version-management, resource-adoption. Plus the new AI Assistant
    overview.
  • Core Concepts ? added vertical-pod-autoscaler.
  • The duplicate user-guides/container-security.md was moved to
    guides/container-security.md (different content from the existing
    troubleshooting/container-security.md ? both kept).
  • 9 deeper ai-assistant/ pages stay live by URL but are deliberately not
    in nav (per design doc 05 �4 Option B ? they need a separate content audit).
    Marked with not_in_nav so mkdocs doesn't warn.

YAML schema fixes

Cross-checked every server.yaml example against the Go source-of-truth in
pkg/api/server.go. Fixed:

  1. getting-started/quick-start.md ? the parent-stack example was missing
    the middle resources: map. The example now shows the full three-level
    nesting plus a template: reference and name: field.
  2. guides/parent-gcp-gke-autopilot.md ? second resources block (Private
    VPC example) had only one level of resources:, skipping the outer per-stack
    container. Added the outer level and re-indented nested content.
  3. reference/supported-resources.md ? replaced the generic intro with an
    explicit canonical YAML skeleton showing all three resources: levels and
    labeling each. Cites ServerDescriptor in pkg/api/server.go as the
    source of truth.

The other audited guides (parent-ecs-fargate.md, parent-pure-kubernetes.md)
already had the correct nesting.

Quick-start: sc provision step

getting-started/quick-start.md previously jumped from "set up secrets" to
"sc deploy" without ever provisioning the parent stack ? but the parent has
to exist (S3 buckets, templates, registrar) before any service deploys against
it. Split into:

  • Step 4: Provision the parent stack ? explains what sc provision does
    and when to re-run it (only when server.yaml changes).
  • Step 5: Deploy your service ? what sc deploy does after the parent
    exists.

Emoji sweep (600+ instances)

Stripped AI-slop emojis from all live pages per 01-positioning-and-tone.md
�2.1:

Pattern Treatment
? in tables ? "Yes"
? in tables ? "No"
?/? in bullets stripped
Decorative (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ???, ???, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ?) stripped
Keyboard-numerics (1????) stripped ? use ordered Markdown lists
Box-drawing (? ? ? ?) kept ? typographic, not pictographic

Followed by a parser-aware bold-marker fixup so emoji removal didn't leave
** text ** patterns (which Markdown won't render as bold), and a list-format
fixup that inserts a blank line before any - list whose preceding paragraph
ends in : or ** (Markdown requires the blank line; the user reported this
specifically on the template-placeholders-advanced.md#gcp-bucket anchor).

Link audit (105 warnings ? 0 on live pages)

mkdocs build --strict previously failed with 106 link warnings. After this
PR: zero warnings on live pages. Fixes include:

  • concepts/template-placeholders.md "See Also" (user-reported) ?
    wrong relative paths: supported-resources.md ? ../reference/...,
    examples/ ? ../examples/README.md, etc.
  • examples/secrets/README.md ? replaced phantom reference/cli.md and
    guides/{client,server,security}-configuration.md links with the existing
    reference + guide pages.
  • guides/cicd-github-actions.md + examples/cicd-github-actions/README.md ?
    removed dangling references to advanced/{deployment-patterns,monitoring}.md
    (never written), redirected to advanced/best-practices.md and
    guides/container-security.md.
  • examples/kubernetes-affinity/* ? phantom high-availability/ and
    performance-optimization/ refs removed; guides/kubernetes-native/ ?
    guides/parent-pure-kubernetes.md.
  • reference/supported-resources.md ? stale ./howto/ link removed.
  • 30+ unrecognized-relative-links fixed by adding explicit /README.md or
    /index.md suffix per mkdocs hint output.

ai-assistant/* pages still contain broken links (mostly to unwritten sibling
example pages); those resolve when the AI-assistant content audit happens
separately. Marked not_in_nav so they don't pollute build output.

Build status

mkdocs build                  # succeeds
mkdocs build --strict         # ai-assistant orphans still warn (out of scope)

Zero link warnings on live nav pages. Promotional-language grep
((faster|reduction|productivity|enterprise|revolutionary|game-changing|complexity|traditional|best-in-class))
returns near-zero hits on touched pages.

Commit sequence on this branch

Commit Subject
295799a2 docs: light theming pass aligned with simple-container.com brand
5b6bc5de docs: fold per-page TOC into left sidebar (single nav column)
eb661d7e docs: drop mermaid2 plugin, use mkdocs-material native mermaid
f44b5f54 docs: restore mermaid2 with brand theme, switch to non-custom fence
17e48fae docs: dark mermaid classDef fills on main-concepts diagram
17c29120 docs: cut promotional pages, rewrite index, refactor main-concepts
6f8e416c merge: fold docs/theming-pass into unified refactor branch
9614a034 docs: emoji sweep, link audit, nav surfacing, quick-start sc provision
e182709a docs: YAML schema sweep ? fix wrong resources nesting in canonical examples
7b885dcf docs: insert blank line before lists following bold/colon paragraphs

Test plan

  • pip install -r docs/requirements.txt
  • mkdocs build succeeds (a venv under docs/.venv/ is gitignored)
  • mkdocs serve ? visual eyeball pass:
    • Home ? terse, no claims, links work
    • concepts/main-concepts/ ? Architecture Overview mermaid diagram renders with dark brand colors
    • concepts/template-placeholders/ ? "See Also" links resolve
    • concepts/template-placeholders-advanced/#gcp-bucket ? GCS/S3 variable lists render as bulleted lists
    • getting-started/quick-start/ ? six steps including sc provision before sc deploy
    • reference/supported-resources/ ? canonical YAML skeleton at the top
    • Header logo, dark palette, Plus Jakarta Sans typography
    • Light-mode toggle works (sun/moon icon in top header)
    • No double-sidebar ? per-page TOC integrated into left sidebar
  • Random spot-check across guides for residual emojis / promotional language

Out of scope (queued for follow-ups)

  • ai-assistant/* content audit ? 9 deeper pages with marketing tone +
    broken inbound/outbound links. Stay live by URL, hidden from nav.
  • examples/* YAML schema audit ? those configs are real working code;
    if any drift from canonical resources nesting, separate sweep.
  • Versioned docs ? mkdocs supports it once a versioning policy exists.
  • External-link checker (lychee or similar) ? would catch dead landing
    cross-references.

Related design docs

All in simple-container-com/landing at .agents/design/2026-05-25/docs-refactor/:

Doc Subject
README.md Plan index, tone shift table, cross-cutting concerns
01-positioning-and-tone.md Docs voice principle + emoji policy + Forge mention rules
02-page-by-page-change-map.md KEEP/REWRITE/DELETE actions + emoji sweep + link audit
03-yaml-schema-reference.md Authoritative server/client.yaml shapes from Go
04-primitives-catalog.md Verified resource types, templates, auth, registrars
05-orphans-and-nav.md Troubleshooting, compliance, ai-assistant surfacing
06-sequencing-and-risks.md Branching strategy, checklists, risks
07-theming-and-brand.md Palette + fonts + extra.css blueprint + status log

? Generated with Claude Code

universe-ops and others added 10 commits May 25, 2026 23:22
Apply mkdocs-material customization so the docs site shares palette,
fonts, and logo with simple-container.com while staying recognizably
"docs-shaped" (sidebar nav, anchor links, search).

- mkdocs.yml: add palette (slate dark + default light, primary
  deep-purple, accent cyan), font (Plus Jakarta Sans / DM Mono),
  favicon, three more features (navigation.top, content.code.copy,
  content.code.annotate), extra_css ref.
- docs/stylesheets/extra.css: 12 sections (~170 lines) tuning brand
  color tokens to landing's exact hex values (#a855f7 / #22d3ee /
  #07070f / #eeeeff / #93c5fd / #c4b5fd), dark-scheme overrides,
  header backdrop blur, hero-gradient H1 scoped to homepage only,
  inline + block code styling, table accents, admonitions, active
  nav, search box, footer, buttons, body typography.
- images/sc-logo.png: replace docs-local copy with landing's
  canonical 1024x1024 brand asset.
- .gitignore: add .venv/ + docs/.venv/ for local mkdocs builds.

Design doc + status log in landing repo:
  .agents/design/2026-05-25/docs-refactor/07-theming-and-brand.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace `toc.follow` with `toc.integrate` in mkdocs.yml features.
Pages with both chapter nav and a TOC (e.g. examples/lambda-functions/)
were rendering two side panels; the integrated TOC consolidates them
into the left sidebar under the active page entry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mkdocs-material 9.x bundles mermaid + initialize call with themeCSS
that follows the active palette. The mermaid2 plugin was overriding
this with its own loader, leaving diagrams unstyled on the dark
scheme (unreadable on the dark page background).

Removing the plugin lets mkdocs-material auto-theme diagrams to the
current palette — light-on-dark glyphs in slate scheme.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previous attempt to drop mermaid2 in favor of mkdocs-material native
was a misread: native mermaid support is Insiders-tier (paid) only.
Free version needs the plugin to load mermaid.js and call initialize.

mkdocs-mermaid2-plugin 1.2.3 with:
- fence_mermaid (not _custom) — produces <div class="mermaid"> markup
  and lets the plugin call mermaid.initialize itself. The _custom
  variant assumes Material's bundle will bridge window.mermaidConfig
  to mermaid.initialize, which only happens in Insiders.
- theme: base + themeVariables aligned with simple-container.com
  palette: #07070f bg, #1e1b4b primary, #a855f7 borders/lines,
  #22d3ee accents, #eeeeff text.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Architecture Overview diagram had hardcoded pastel classDef
fills (#e1f5fe, #e8f5e8, #fff8e1) that override the global mermaid
theme variables. On the dark page background these rendered as
near-white blobs with dark green/blue text — unreadable.

Replace with dark fills aligned to landing palette while keeping
three-way distinction between subgraphs:
- parentStack: dark blue (#0c1f3f / #3b82f6 stroke / #dbeafe text)
- serviceStack: dark purple (#1a1740 / #a855f7 / #e9d5ff)
- deployFlow: dark cyan (#0f2a2e / #22d3ee / #cffafe)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per landing/.agents/design/2026-05-25/docs-refactor/ plan — branch 1
of the content refactor (promo cuts + index rewrite + main-concepts
trim).

Deletions (~1,700 lines of marketing prose):
- concepts/motivation.md ("game-changing approach", "500x speed",
  duplicates landing). 193 lines.
- reference/use-cases.md ("10 reasons to buy SC" with quantified
  pitches in every entry). 230 lines.
- advanced/scaling-advantages.md ("SC vs Terraform/Pulumi" comparison
  with marketing language). 912 lines.
- advanced/compare-with-other-tools.md ("Why SC wins" positioning
  tables). 384 lines.

mkdocs.yml nav: drop "Why Simple Container", "Use Cases", "Scaling
Advantages", "Tool Comparisons" entries.

index.md: rewrite as a five-link landing pad. One factual paragraph
describing what SC is. Links to Install / Quickstart / Concepts /
Reference / Guides. Brief Forge mention (emits SC YAML natively via
MCP). Cuts: "500x faster", "70% reduction", "80% staff reduction",
"game-changing", "enterprise-grade", all emoji-decorated section
headers.

concepts/main-concepts.md: heavy rewrite. Keeps the architectural
substance (parent/child stacks, what each owns, when each changes,
comparison table, resource-sharing pattern, double-resources nesting
note) and the mermaid diagram (emojis stripped from labels per doc
01 §2.1, dark classDef fills for dark-theme readability). Cuts §4-§6
"quantified scaling benefits" + "real-world scenarios" + "conclusion"
sections — all promotional. Adds a brief Forge mention where the
programmatic / MCP interface is referenced. 282 → 138 lines.

guides/index.md: redirect dangling link from deleted scaling-advantages
to advanced/best-practices.

Two ai-assistant orphan pages still reference the deleted
scaling-advantages.md (developer-mode, devops-mode). Those are deferred
per doc 05 §4 — ai-assistant content audit is a separate workstream.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts:
#	docs/docs/concepts/main-concepts.md
Cross-cutting cleanup across ~70 live pages.

Emoji sweep (per landing/.agents/design/2026-05-25/docs-refactor/01 §2.1):
- Stripped 600+ AI-slop emoji instances on live pages: ✅, ❌, 🚀, 🎯,
  🔧, 💡, ⚡, 📈, 💰, 1️⃣–🔟, plus dozens of decorative pictograms
  (🛠 ⭐ 🌟 🔥 📦 🔐 🌐 ☸ 📚 🔗 🧠 📖 👥 🏗 📋 📄 🔄 🧑‍💻 👩‍💻 🤖 ✨ 🎉
  💯 📝 📊 🎛 📁 🔍 🚨 📌 🛡 🔹 📞 …).
- ai-assistant/* deep pages excluded from the sweep — they're queued
  for the separate content audit per doc 05 §4.
- Box-drawing characters (└ ├ │ ─) kept since they're typographic, not
  pictographic.
- ✅/❌ in table cells converted to "Yes"/"No" where they were the
  sole signal. Decorative ones removed.
- Followed by a parser-aware bold-marker fixup so emoji removal didn't
  leave `** text **` patterns (which markdown won't render as bold).

Link audit (per doc 02 §14):
- concepts/template-placeholders.md "See Also" — fixed relative paths
  (user-reported example): supported-resources.md → ../reference/...
  examples/ → ../examples/README.md, authentication.md → ../guides/secrets-management.md
- examples/secrets/README.md — replaced phantom reference/cli.md and
  guides/{client,server,security}-configuration.md with the existing
  reference/supported-resources, reference/service-available-deployment-schemas,
  guides/secrets-management, guides/container-security.
- guides/cicd-github-actions.md + examples/cicd-github-actions/README.md —
  removed dangling references to advanced/{deployment-patterns,monitoring}.md,
  redirected to existing advanced/best-practices.md and guides/container-security.md.
- examples/kubernetes-affinity/* — phantom high-availability/ and
  performance-optimization/ refs removed; guides/kubernetes-native/
  → guides/parent-pure-kubernetes.md.
- examples/kubernetes-vpa/README.md — anchor #vertical-pod-autoscaler-vpa
  → concepts/vertical-pod-autoscaler.md (no anchor needed).
- reference/supported-resources.md — stale ./howto/ link → examples/README.md.
- Mass-fixed 30+ unrecognized-relative-links by adding /README.md or
  /index.md suffix per mkdocs hint output.
- Build now reports 0 link warnings on live pages (all remaining
  warnings are inside ai-assistant/* orphan pages, marked not_in_nav).

Nav surfacing (per doc 05):
- Added Troubleshooting and Compliance nav sections (1 page each).
- Surfaced 6 previously-orphan live guide pages:
  service-steps-to-deploy, cicd-github-actions, container-security,
  dns-management, gke-version-management, resource-adoption.
- Surfaced concepts/vertical-pod-autoscaler.md.
- Moved user-guides/container-security.md → guides/container-security.md
  (different content from troubleshooting/container-security.md; both
  kept, both surfaced under correct nav sections).
- Removed empty user-guides/ directory.
- Added AI Assistant nav entry pointing at the rewritten
  ai-assistant/index.md (terse overview per doc 05 §4 Option B).
- not_in_nav directive added for the 9 ai-assistant deep pages so
  they remain reachable by URL but don't generate nav warnings.

ai-assistant/index.md rewrite:
- Stripped marketing voice (purpose statements, "intelligent setup",
  "Two-Mode Architecture" emoji-decorated section). New shape: what
  the CLI does, two modes with example commands, MCP server section,
  pointer to the deeper docs that will surface after content audit.
  174 → 34 lines.

quick-start.md `sc provision` (user-reported):
- Split Step 4 (Deploy) into Step 4 (Provision the parent stack) and
  Step 5 (Deploy your service). The previous version skipped the
  parent-stack provisioning step — required before any service deploy
  because shared resources (S3 buckets, templates, registrar) must
  exist first. Step 6 is the new Verify.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…amples

Per landing/.agents/design/2026-05-25/docs-refactor/03 — verify every
server.yaml example uses the canonical three-level resources nesting
(resources → registrar/resources → env → resources → name).

Bugs found and fixed:

1. getting-started/quick-start.md — the parent-stack example was
   missing the inner `resources:` map between the env (`prod`) and
   the resource name (`main-bucket`). Corrected to add the inner
   `resources:` key + a `template:` reference + a `name:` field.

2. guides/parent-gcp-gke-autopilot.md — the second resources block
   (Private VPC example, line ~190) had only one level of `resources:`,
   skipping the outer per-stack container. Added the outer level and
   re-indented the nested content accordingly.

3. reference/supported-resources.md — replaced the generic intro with
   an explicit canonical YAML skeleton at the top of the page showing
   all three `resources:` levels with comments labeling each. Cites
   `pkg/api/server.go` ServerDescriptor as the source of truth.

The other audited files (guides/parent-ecs-fargate.md,
guides/parent-pure-kubernetes.md) already had the correct nesting.

Build: mkdocs build with 0 link warnings on live pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mkdocs-material requires a blank line between a paragraph and the
list that follows it. Patterns like

  **Bucket-Specific Variables** (where BUCKET_NAME is …):
  - GCS_<BUCKET_NAME>_BUCKET — Bucket name
  - GCS_<BUCKET_NAME>_LOCATION — Bucket location

render as a single run-on paragraph instead of an unordered list.

User-reported on
  http://127.0.0.1:8000/concepts/template-placeholders-advanced/#gcp-bucket

Script targets the safe subset: only inserts a blank line when the
preceding line ends with `:` or `**` AND the next line starts with
a top-level `- ` (or `*`, `+`). Skips inside fenced code blocks,
nested list items, headings, and ordered-list continuations.

47 pages fixed across guides, references, examples, concepts,
compliance, and troubleshooting.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Semgrep Scan Results

Repository: api | Commit: 54a2234

Check Status Details
✅ Semgrep Pass 0 total findings (no error/warning)

Scanned at 2026-05-25 21:21 UTC

@Laboratory
Laboratory self-requested a review May 25, 2026 21:21
@github-actions

Copy link
Copy Markdown

Security Scan Results

Repository: api | Commit: 54a2234

Check Status Details
✅ Secret Scan Pass No secrets detected
✅ Dependencies (Trivy) Pass 0 total (no critical/high)
✅ Dependencies (Grype) Pass 0 total (no critical/high)
📦 SBOM Generated 528 components (CycloneDX)

Scanned at 2026-05-25 21:21 UTC

@smecsia
smecsia merged commit 9352085 into main May 25, 2026
11 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants